package org.mendoza.salud.hvt.ui.cruds;

import com.vaadin.cdi.CDIView;
import com.vaadin.data.util.BeanContainer;
import com.vaadin.data.util.BeanItem;
import com.vaadin.data.util.BeanItemContainer;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.data.util.converter.StringToIntegerConverter;
import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener;
import com.vaadin.ui.*;
import org.mendoza.salud.hvt.model.global.Pais;
import org.mendoza.salud.hvt.services.global.GeoServiceBean;

import javax.ejb.EJB;
import java.util.List;

/**
 * Created by ricardo on 25/02/15.
 */
@CDIView("main")
public class PaisCrud extends CustomComponent implements View {
    @EJB
    GeoServiceBean geoServiceBean;
    
    @Override
    public void enter(ViewChangeListener.ViewChangeEvent viewChangeEvent) {
        VerticalLayout layout = new VerticalLayout();
        layout.setSizeFull();
        
        //Campos        
        final TextField textPaisNombre = new TextField("Nombre");        
        final TextField textPaisCodigo3 = new TextField("Codigo 3");
        textPaisCodigo3.setMaxLength(3);
        final TextField textPaisCodigo2 = new TextField("Codigo 2");
        textPaisCodigo2.setMaxLength(2);
        final TextField textPaisNumero = new TextField("Codigo Numerico");
        textPaisNumero.setConverter(StringToIntegerConverter.class);
        Button buttonGrabar = new Button("Grabar!!");
        
        layout.addComponent(textPaisNombre);
        layout.addComponent(textPaisCodigo3);
        layout.addComponent(textPaisCodigo2);
        layout.addComponent(textPaisNumero);
        layout.addComponent(buttonGrabar);
        
        listadoDePaises = new Table("Listado de Paises Vacío");
        refrescarListado();
        
        layout.addComponent(listadoDePaises);
        setCompositionRoot(layout);
        
        buttonGrabar.addClickListener(new Button.ClickListener() {
            @Override
            public void buttonClick(Button.ClickEvent clickEvent) {
                Pais pais = new Pais();
                pais.setNombre(textPaisNombre.getValue());
                pais.setCodigoAlfa3(textPaisCodigo3.getValue());
                pais.setCodigoAlfa2(textPaisCodigo2.getValue());
                pais.setCodigoNumerico(Integer.parseInt(textPaisNumero.getValue()));
                geoServiceBean.persistPais(pais);
                refrescarListado();
            }
        });
    }
    Table listadoDePaises;
    
    
    private void refrescarListado() {
        List<Pais> listPaises = geoServiceBean.getAllPaises();
        BeanItemContainer<Pais> beanItemContainer = new BeanItemContainer<Pais>(Pais.class);
        beanItemContainer.addAll(listPaises);
        beanItemContainer.removeContainerProperty("id");
        beanItemContainer.removeContainerProperty("uid");
        beanItemContainer.removeContainerProperty("version");
        listadoDePaises.setContainerDataSource(beanItemContainer);
        
    }
    
}
